1. Field of the Invention
Various aspects of the present invention relate to the use of programmable macros and, more particularly, to providing improved efficiency in user interactions on devices used to access remote computing resources.
2. Description of Related Art
Mobile devices typically lack the processing power and storage capacity of traditional computers. Because of these constraints, mobile devices are often used to access remote computing resources, which often provide greater processing power and storage capacity. Such remote computing resources include applications installed on a personal computer (PC) and accessed through remote desktop software.
Many mobile device users rely on remote computing software on their mobile devices to access a PC or virtual desktop infrastructure (VDI). Unfortunately, remote computing software available for mobile devices is often ported on an as-is basis from corresponding PC counterparts and hence does not provide a satisfactory user experience. The unique limitations of mobile devices, particularly smartphones and personal digital assistants (PDAs), can impose substantial operational overheads on the user, making even mundane tasks burdensome. Remote computing from a mobile device can be significantly more difficult because of device constraints often including a small form-factor and screen size, and the lack of a physical mouse or keyboard.
One way to reduce burdensome overhead is by enabling common sequences of user operations to be performed in aggregate. The notion of operation aggregation is related to the concept of a macro, which is a sequence of instructions that has been recorded and can be replayed by the user. Two common types of macro solutions that exist today are raw macros and application macros.
Raw macros record and replay raw activities such as keystrokes and mouse clicks at specified coordinates. An example of a raw macro system is AutoHotkey. Although raw macro software can record macros generically across applications, such macros cannot be replayed robustly. Since raw macros are defined by system variables, a raw macro could fail to replay the intended task if the system environment during replay is not precisely the same as the recorded state. For example, a moved or resized window could cause a mouse click replayed at a recorded coordinate to activate a different function. Raw macros cannot respond to adaptive user interfaces, such as truncated menus that show frequent items in Microsoft® Office™ and other applications, as the location of items can change with use. The pacing of raw macro replay can also be problematic as the availability of the next function to invoke can be delayed due to the current computational load, or an unexpected dialog box. Since raw macros have no information regarding the application context, they cannot respond appropriately.
Raw macros are in contrast to application macros. Application macros are provided by the application developers in certain application software. One of the most popular application macros is the macro system within Microsoft® Excel™. Excel allows users to record their operations in the form of a Visual Basic™ script. Another example is iMacros®, a browser plug-in that allows users to record their operations when browsing the web.
Although application macros are robust at runtime, application macro software can only record macros specific to the recording application; thus, the scope of application macros is limited. For example, an application macro cannot work across multiple applications. Further, as the ability to record application macros is a feature of the application software itself, a user must rely on the application developer to provide such functionality. For this reason among others, some functions of an application may not be captured by the macro system. For example, iMacros® does not record the operation of printing a web page.
Thus, conventional macro systems fail to provide a generic and robust solution for aggregating user interactions on mobile devices.